//存放只要交互逻辑js代码
// javascript 模块化
var seckill = {
    //封装秒杀相关的ajax的url
    URL: {
        now: function () {
            return '/seckill/time/now';
        },
        exposer: function (seckillId) {
            return '/seckill/' + seckillId + '/exposer';
        },
        execution: function (seckillId, md5) {
            return '/seckill/' + seckillId + '/' + md5 +'/execution';
        }
    },
    //验证手机号
    validatePhone: function (phone) {
        if (phone && phone.length == 11 && !isNaN(phone)) {
            return true;
        } else {
            return false;
        }
    },

    //处理秒杀逻辑,执行秒杀
    handleSeckill: function (seckillId, node) {
        //所有控制节点，都需要之前隐藏一下
        node.hide().html('<button class="btn btn-primary btn-lg" id="killBtn">开始秒杀</button>');//首先是添加秒杀按钮
        //使用ajax，实现暴露买秒杀地址的操作
        $.post(seckill.URL.exposer(seckillId), {}, function (result) {
            //在回调函数中，执行交互操作
            if (result && result['success']) {
                var exposer = result['data'];  //已经获取到exposer
                if (exposer['exposed']) {
                    //开启秒杀，首先是获取秒杀地址
                    var md5 = exposer['md5'];
                    var killUrl = seckill.URL.execution(seckillId, md5);
                    //绑定一次点击事件，以防止用户多次点击，触发事件
                    $('#killBtn').one('click',function () {
                       //执行秒杀操作
                        //1:先禁用按钮
                        $(this).addClass('disabled');
                        //2.发送秒杀的请求，执行秒杀操作
                        $.post(killUrl, {}, function (result) {
                            if (result && result['success']){
                                var killResult = result['data'];
                                var state = killResult['state'];
                                var stateInfo = killResult['stateInfo'];
                                //3.显示秒杀结果
                                node.html('<span class="label label-success">' + stateInfo + '</span>');
                            }
                        });
                    });
                    node.show();  //显示秒杀按钮。
                } else {
                    //没有开启秒杀，展示系统时间
                    var now = exposer['now'];
                    var start = exposer['start'];
                    var end = exposer['end'];
                    //因为客户端和服务器的计时有可能会有偏差，服务器可能会使用ntp矫正，但是客户端并不会,所以是让他再走一遍计时逻辑
                    seckill.countdown(seckillId, now, start, end);
                }
            } else {
                console.log('result' + result);
            }
        });

    },

    //倒计时函数实现
    countdown: function (seckillId, nowTime, startTime, endTime) {
        var seckillBox = $('#seckill-box');
        //时间判断
        if (nowTime > endTime) {
            //秒杀结束
            seckillBox.html('秒杀结束！');
        } else if (nowTime < startTime) {
            //秒杀未开始,计时。。使用countdown插件
            var killTime = new Date(startTime + 1000);
            seckillBox.countdown(killTime, function (event) {
                var format = event.strftime('秒杀倒计时：%D天 %H时 %M分 %S秒');
                seckillBox.html(format);
            }).on('finish.countdown', function () {
                //获取秒杀地址，实现秒杀逻辑，执行秒杀,两个参数，后面那个这是面板节点
                seckill.handleSeckill(seckillId, seckillBox);
            });
        } else {
            //秒杀开始,用户可执行秒杀逻辑
            seckill.handleSeckill(seckillId, seckillBox);
        }
    },


    //详情页秒杀逻辑
    detail: {
        //详情页初始化
        init: function (params) {
            //手机验证和登录，计时
            //规范我们的交互流程
            //因为该系统是没有后台的，所以我们的手机号是保存在cookie中的
            var killPhone = $.cookie('killPhone');

            //验证手机号
            if (!seckill.validatePhone(killPhone)) {
                //绑定手机号
                var killPhoneModal = $('#killPhoneModal');
                //显示出弹出层
                killPhoneModal.modal({
                    show: true,//显示弹出层
                    backdrop: 'static',//禁止位置关闭
                    keyboard: false //关闭键盘时间
                });
                //触发点击事件
                $('#killPhoneBtn').click(function () {
                    var inputPhone = $('#killPhoneKey').val();
                    if (seckill.validatePhone(inputPhone)) {
                        //电话写入cookie
                        $.cookie('killPhone', inputPhone, {expires: 7, path: '/seckill'});
                        //刷新界面
                        window.location.reload();
                    } else {
                        $('#killPhoneMessage').hide().html('<label class="label label-danger">手机号错误！</label>>').show(300);
                    }
                });
            }

            //已经登录
            //启动系统的计时交互
            var seckillId = params['seckillId'];
            var startTime = params['startTime'];
            var endTime = params['endTime'];
            //显示秒杀时间时间的ajax请求
            $.ajax({
                type: "GET",
                url: seckill.URL.now(),
                success: function (result) {
                    if (result && result['success']) {
                        var nowTime = result['data'];
                        //时间判断
                        //计时交互
                        seckill.countdown(seckillId, nowTime, startTime, endTime);
                    } else {
                        console.log('result:' + result);
                    }
                }
            });


        }
    }

}